package com.jlf.core.engine.server;

import com.jlf.core.engine.domain.SchemaFieldDO;
import com.jlf.core.engine.entity.field.DeleteFieldWrapper;
import com.jlf.core.engine.entity.field.EditFieldWrapper;
import com.jlf.core.engine.query.SchemaFieldQueryInput;
import com.jlf.core.output.ListResultWrapper;

import java.util.List;

/**
 * 领域字段的服务接口
 *
 * @author wujr
 * 2023/7/7
 * @version 1.0
 * 【变更历史】
 * [wujr 2023/7/7 1.0 新增]
 */
public interface SchemaFieldServer {
    /**
     * 新增模型领域字段
     * @param record 字段记录
     * @return 新增后的字段记录
     * @throws Exception 新增失败，抛出异常
     */
    SchemaFieldDO add(SchemaFieldDO record) throws Exception;

    /**
     * 批量新增模型字段
     * @param records 新增的字段
     * @throws Exception 新增失败，抛出异常
     */
    void add(List<SchemaFieldDO> records) throws Exception;

    /**
     * 编辑模型字段
     * @param field 字段信息
     * @throws Exception 编辑失败，抛出异常
     */

    void edit(EditFieldWrapper field) throws Exception;

    /**
     * 删除模型字段
     * @param field 字段信息
     * @throws Exception 删除失败，抛出异常
     */
    void delete(DeleteFieldWrapper field) throws Exception;

    /**
     * 查询模型字段
     * @param input 查询条件
     * @param pageNo 分页索引，从1开始
     * @param pageSize 分页记录数量，0表示不分页
     * @return 字段列表
     */
    ListResultWrapper<SchemaFieldDO> query(SchemaFieldQueryInput input, Integer pageNo, Integer pageSize);
}
